/**
 * @file common_sys_utils.h
 * @author Jio (hedajun@hzdusun.com)
 * @brief 操作 /sys/class 用户接口使用, 避免使用system调用
 * @version 0.1
 * @date 2023-10-12
 * 
 * @copyright Copyright (c) 2023
 * 
 */
#ifndef __COMMON_SYS_CLASS_OPT__
#define __COMMON_SYS_CLASS_OPT__

#include "common_types.h"
#include "common_dbg_log.h"

#ifdef __cplusplus
    extern "C" {
#endif

#define RB_SYS_FILE_TIME_COMPARE_EQUEAL             0
#define RB_SYS_FILE_TIME_COMPARE_LARGER             1
#define RB_SYS_FILE_TIME_COMPARE_LITTLE             2
#define RB_SYS_FILE_TIME_COMPARE_SOURE_ERROR        -1
#define RB_SYS_FILE_TIME_COMPARE_DEST_ERROR         -2

extern RB_INT32 rb_sys_class_write(const char* sys_class_file_path, const char* write_cmd);

extern RB_INT32 rb_sys_gpio_set(RB_INT32 gpio, RB_INT32 value);

extern RB_INT32 rb_sys_create_directory(const char *directory);

extern RB_INT32 rb_sys_create_directory_recursive(const char *directory);

/**
 * @brief 比较文件1和文件2的修改时间
 * 
 * @param file1 
 * @param file2 
 * @return RB_INT32 如果文件2比文件1新返回 RB_SYS_FILE_TIME_COMPARE_LITTLE 
 *                  如果文件1比文件2新返回 RB_SYS_FILE_TIME_COMPARE_LARGER
 */
extern RB_INT32 rb_sys_file_modify_time_compare(const char *file1, const char *file2);


/**
 * @brief 拷贝file1到file2, 并将file2的修改时间设置为file1的修改时间
 * 
 * @param file1 
 * @param file2 
 * @return RB_INT32 
 */
extern RB_INT32 rb_sys_file_sync_cp(const char *file1, const char *file2);

#ifdef __cplusplus
}
#endif

#endif